package org.backend.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.backend.pojo.entity.Transaction;
import org.backend.pojo.entity.TransactionItem;
import org.backend.pojo.vo.CategoryStatisticsVO;
import org.backend.pojo.vo.MonthStatisticsVO;
import org.backend.pojo.vo.ProductWithQuantityVO;

import java.util.List;

@Mapper
public interface TransactionMapper {

    /**
     * 插入一条新的交易
     */
    int insertTransaction(Transaction transaction);

    /**
     * 交易中的多种商品
     */
    int insertTransactionItems(List<TransactionItem> transactionItems);

    /**
     * 根据用户ID查询交易记录
     */
    List<Transaction> getTransactionById(Transaction transaction);

    List<MonthStatisticsVO> getTransactionByIdForStatistics(String openid, int year, int month);

    /**
     * 根据交易Id查询对应交易记录
     */
    Transaction getTransactionByTransactionId(Integer transactionId);

    /**
     * 根据交易id连表查询出TransactionWithProductsVO
     */
    List<ProductWithQuantityVO> getTransactionWithProducts(Integer transactionId);

    /**
     * 获取所有订单信息
     */
    List<Transaction> getAllTransaction();

    /**
     * 根据订单号删除订单
     */
    int deleteTransaction(Integer transactionId);

    int update(Transaction transaction);

    /**
     * 定时任务，查询订单状态是否可以转换成已发货
     */
    Boolean reviseTransactionStatus(Integer transactionId);

    /**
     * 获取所有订单状态为待发货的订单号
     */
    List<Integer> getTransactionId();

    List<CategoryStatisticsVO> categoryChart(String openid);
}
